import 'package:shared_preferences/shared_preferences.dart';

class TokenManager {
  //定义私有属性token和常量key
    String? _token = '';
    final _key = 'enjoy_token';


    //创建一个全局的单例对象
    static TokenManager? _instance;
    //然后创建自定义构造函数
    TokenManager._internal();

    //默认的构造函数,外部创建实例的时候自动执行
    factory TokenManager (){
      //工厂模式
      //前面这个私有的变量为空时才会执行赋值操作
      //也就是说只有第一次创建实例的时候才会执行赋值操作
      //后面再次创建实例的时候,因为这个变量已经有值了,所有不会再次赋值
      _instance ??= TokenManager._internal();
      return _instance!;
    }


    //获取token,一进入页面就获取仓库中的token并赋值
    Future init () async{
      //首先获取仓库实例
      final SharedPreferences prefs = await SharedPreferences.getInstance();
      //拿到仓库中的token并赋值
      _token = prefs.getString(_key);
    }

    //存储token
    Future setToken (String token) async {
      _token = token;
      final SharedPreferences prefs = await SharedPreferences.getInstance();
      prefs.setString(_key, token);
    }

    //获取token
    String? getToken (){
      return _token;
    }

    //删除token
    Future removeToken () async {
      _token = null;
      final SharedPreferences prefs = await SharedPreferences.getInstance();
      prefs.remove(_key);
    }

}